import axios from 'axios' // 安装axios后引入
//import qs from 'qs'
import * as loading from './loading' // elementui的loading
var baseUrl = ""
var trtcbaseUrl =""
var baiduUrl =""
if ((/(\/kh.tyzfchina.com.cn)/ig).test(location.href)) {
    baseUrl = "https://kh.tyzfchina.com.cn:9041";
    trtcbaseUrl = "https://kh.tyzfchina.com.cn:7783";
    // baiduUrl="https://aip.baidubce.com";
    // baiduUrl="https://tyzfbj.com/baiduApi";
    baiduUrl="https://tyzfbj.com/baiduApi";
} else{
    baseUrl = "http://tyzfbj.com:9041", //同小程序
    // baseUrl = "https://kh.tyzfchina.com.cn:9041";//"https://tyzfbj.com:4002";
    // baseUrl = "https://tyzfbj.com:4002";
    //trtcbaseUrl = "https://kh.tyzfchina.com.cn:7783";
    // baseUrl = "http://192.168.253.217:6003";
    // baseUrl = "http://tyzfbj.com:9041",
    trtcbaseUrl = "https://kh.tyzfchina.com.cn:7783";
    // trtcbaseUrl = "http://192.168.253.217:7783";
    baiduUrl="/baiduApi";
}

const instance0 = axios.create({
    baseURL: baiduUrl,
    timeout: 15000
})
const instance = axios.create({
    baseURL: baseUrl,
    timeout: 15000
})
const instance2 = axios.create({
    baseURL: trtcbaseUrl,//'https://kh.tyzfchina.com.cn:7783',//TRTC地址
    timeout: 15000
})
const instance3 = axios.create({
    baseURL: baseUrl,//bdbaseUrl
    timeout: 1500000
})
const instance4 = axios.create({
    timeout: 15000,
    withCredentials: true,
    headers: { 'X-Requested-With': 'XMLHttpRequest' },})
// function request2(config) {
//     return instance2(config)
// }
function request(config) {
    return instance(config)
}
// function GetUser2(data) {
//     return request2({
//         url: data.url,
//         method: data.method,
//         data: data.data,
//         'auth': data.token
//     })
// }
function GetUser(data) {
    return request({
        url: data.url,
        method: data.method,
        data: data.data,
        'auth': data.token
    })
}
//解析token
// export const decodeJWT = function (token: string): TokenData {
//     if (!token) {
//       return null;
//     }
//     const decoded = jwt.decode(token, { complete: true });
//     return decoded?.payload;
//   };
// axios实例创建好之后，开始使用request拦截器对axios请求配置做统一处理
//request拦截器==>对请求参数做处理
instance0.interceptors.request.use(config => {
    console.log('request拦截器==>对请求参数做处理')
    // if (!config.url.includes('/api/auth/selfhealth')) {
    //     loading.showLoading()
    // }

    config.method === 'post' ?
        // config.data = qs.stringify({
        //     ...config.data
        // }) :
        config.data = {
            ...config.data
        } :
        config.params = {
            ...config.params
        }
    if (config.url != '/api/auth/login' && config.url != '/api/auth/RefreshToken') {
        let currentTime = new Date().getTime()
        //token过期时间
        let expirationTime = new Date(JSON.parse(localStorage.expiration)).getTime()

        if (currentTime < expirationTime) {
            //token未过期
            config.headers.Authorization = 'Bearer ' + JSON.parse(localStorage.token); //将token设置成请求头
        } else {
            //token已过期
            console.log("登录已超时，请重新登录");
        }
    }
    return config
}, error => { // 请求错误处理
    // app.$vux.toast.show({
    //     type: 'warn',
    //     text: error
    // });
    console.log('请求错误处理')
    Promise.reject(error)
})
instance.interceptors.request.use(config => {
    console.log('request拦截器==>对请求参数做处理')
    if (!config.url.includes('/api/auth/selfhealth')) {
        loading.showLoading()
    }

    config.method === 'post' ?
        // config.data = qs.stringify({
        //     ...config.data
        // }) :
        config.data = {
            ...config.data
        } :
        config.params = {
            ...config.params
        }
    if (config.url != '/api/auth/login' && config.url != '/api/auth/RefreshToken') {
        let currentTime = new Date().getTime()
        //token过期时间
        let expirationTime = new Date(JSON.parse(localStorage.expiration)).getTime()

        if (currentTime < expirationTime) {
            //token未过期
            config.headers.Authorization = 'Bearer ' + JSON.parse(localStorage.token); //将token设置成请求头
        } else {
            //token已过期
            console.log("登录已超时，请重新登录");
        }
    }
    return config
}, error => { // 请求错误处理
    // app.$vux.toast.show({
    //     type: 'warn',
    //     text: error
    // });
    console.log('请求错误处理')
    Promise.reject(error)
})
instance2.interceptors.request.use(config => {
    // console.log('********************************', {
    //     ...config.data
    // },config.method === 'post')
    config.method === 'post' ?
        // config.data = qs.stringify({
        //     ...config.data
        // }) :
        //config.data = 'roomid=16246127010&userid=18503483557':
        config.params = config.data:
        config.params = {
            ...config.params
        }
        // config.data = {
        //     ...config.data
        // } :
        // config.params = {
        //     ...config.params
        // }
    if (config.url != '/api/auth/login?acount=admin_nikoyose_3033654362&paswd=admin_nikoyose_3033654362&appid=1400552732&api-version=1') {
        config.headers.Authorization = 'Bearer ' + JSON.parse(localStorage.trtctoken); //将token设置成请求头
        config.headers['Content-Type'] ='application/x-www-form-urlencoded;charset=UTF-8'
        // let currentTime = new Date().getTime()
        // //token过期时间
        // let expirationTime = new Date(JSON.parse(localStorage.trtcexpiration)).getTime()

        // if (currentTime < expirationTime) {
        //     //token未过期
        //     config.headers.Authorization = 'Bearer ' + JSON.parse(localStorage.trtctoken); //将token设置成请求头
        // } else {
        //     //token已过期
        //     alert("登录已超时，请重新登录");
        // }
    }
    return config
}, error => { // 请求错误处理
    // app.$vux.toast.show({
    //     type: 'warn',
    //     text: error
    // });
    console.log('请求错误处理')
    Promise.reject(error)
})
instance3.interceptors.request.use(config => {
    config.method === 'post' ?
        config.params = config.data:
        config.params = {
            ...config.params
        }
        if (config.url != '/api/auth/login' && config.url != '/api/auth/RefreshToken') {
            let currentTime = new Date().getTime()
            //token过期时间
            let expirationTime = new Date(JSON.parse(localStorage.expiration)).getTime()
    
            if (currentTime < expirationTime) {
                //token未过期
                config.headers.Authorization = 'Bearer ' + JSON.parse(localStorage.token); //将token设置成请求头
            } else {
                //token已过期
                console.log("登录已超时，请重新登录");
            }
        }
    return config
}, error => { // 请求错误处理
    // app.$vux.toast.show({
    //     type: 'warn',
    //     text: error
    // });
    console.log('请求错误处理')
    Promise.reject(error)
})
instance4.interceptors.request.use(config => {
    // config.method === 'post' ?
        // config.params = config.data:
        // config.params = {
        //     ...config.params
        // }
        if (config.url != '/api/auth/login' && config.url != '/api/auth/RefreshToken') {
            let currentTime = new Date().getTime()
            //token过期时间
            let expirationTime = new Date(JSON.parse(localStorage.expiration)).getTime()
    
            if (currentTime < expirationTime) {
                //token未过期
                config.headers.Authorization = 'Bearer ' + JSON.parse(localStorage.token); //将token设置成请求头
            } else {
                //token已过期
                console.log("登录已超时，请重新登录");
            }
        }
    return config
}, error => { // 请求错误处理
    // app.$vux.toast.show({
    //     type: 'warn',
    //     text: error
    // });
    console.log('请求错误处理')
    Promise.reject(error)
})

//respone拦截器==>对响应做处理
instance.interceptors.response.use(
    response => { // 成功请求到数据
        loading.hideLoading()
        //console.log('成功请求到数据', response)
        // 这里根据后端提供的数据进行对应的处理
        // if (response.data.code === 0) {
        //     console.log('instance', response.data)
        //     return response.data
        // } else {
        //     console.log('warn')
        //    // return response.data
        // }
        return response.data
    },
    error => { // 响应错误处理
        loading.hideLoading()
        console.log('error', error)
        // let text = JSON.parse(JSON.stringify(error)).response.status === 404 ?
        //     '404' :
        //     '网络异常，请重试'
        // app.$vux.toast.show({
        //     type: 'warn',
        //     text: text
        // });
        //console.log('warn', text)
        return Promise.reject(error)
    }
)
export {
    GetUser,
    //GetUser2,
    instance0,
    instance,
    instance2,
    instance3,
    instance4
}